from math import *
from PublicReference.carry.base import *
# 2021.4.7 韩测


class 职业主动技能(主动技能):

    data0 = []
    data1 = []
    data2 = []
    data3 = []

    def 等效百分比(self, 武器类型):
        等效倍率 = 0.0
        if len(self.data0) >= self.等级 and len(self.data0) > 0:
            等效倍率 += self.data0[self.等级] * self.攻击次数
        if len(self.data1) >= self.等级 and len(self.data1) > 0:
            等效倍率 += self.data1[self.等级] * self.攻击次数2
        if len(self.data2) >= self.等级 and len(self.data2) > 0:
            等效倍率 += self.data2[self.等级] * self.攻击次数3
        if len(self.data3) >= self.等级 and len(self.data3) > 0:
            等效倍率 += self.data3[self.等级] * self.攻击次数4
        return 等效倍率 * (1 + self.TP成长 * self.TP等级) * self.倍率

# 重剑精通


class 技能0(被动技能):
    名称 = '重剑精通'
    所在等级 = 20
    等级上限 = 30
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        if self.等级 <= 20:
            return round(1.05 + 0.01 * self.等级, 5)
        else:
            return round(1.25 + 0.025 * (self.等级 - 20), 5)

    def 物理攻击力倍率(self, 武器类型):
        return self.加成倍率(武器类型)


# 火药改良
class 技能1(被动技能):
    名称 = '火药改良'
    所在等级 = 30
    等级上限 = 20
    基础等级 = 10

    def 加成倍率(self, 武器类型):
        return round(1 + 0.015 * self.等级, 5)


# 一觉被动
class 技能2(被动技能):
    名称 = '终极火力'
    所在等级 = 48
    等级上限 = 40
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.035 + 0.02 * self.等级, 5)


# 二觉被动
class 技能3(被动技能):
    名称 = '无法者之歌'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 11

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.22 + 0.02 * self.等级, 5)


# 三觉被动
class 技能4(被动技能):
    名称 = '铁血豪情'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 4

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


# 双重散射
class 技能5(职业主动技能):
    名称 = '双重散射'
    所在等级 = 15
    等级上限 = 60
    基础等级 = 46
    # 基础 = 1725.5
    # 成长 = 195.9
    # 第1次射击攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 1022, 1126, 1230, 1332, 1436, 1540, 1644, 1748, 1851, 1955, 2059, 2163, 2266, 2370, 2474, 2578, 2682, 2785, 2889, 2993, 3096, 3199, 3303, 3407, 3511, 3615, 3718, 3822, 3926, 4030, 4133, 4237, 4341, 4445, 4548, 4652, 4755, 4859, 4963, 5066, 5170, 5274, 5378, 5481, 5585, 5689, 5793, 5897, 6000, 6104, 6208, 6312, 6414, 6518, 6622, 6726, 6830, 6933, 7037, 7141, 7245, 7348, 7452, 7556, 7660, 7764, 7867, 7971, 8075, 8178]]
    # 第2次射击攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 1533, 1688, 1844, 1999, 2156, 2311, 2466, 2622, 2777, 2933, 3089, 3245, 3400, 3555, 3711, 3866, 4023, 4178, 4333, 4489, 4644, 4800, 4956, 5111, 5267, 5422, 5578, 5733, 5889, 6045, 6200, 6356, 6511, 6666, 6822, 6978, 7134, 7289, 7445, 7600, 7755, 7912, 8067, 8223, 8378, 8533, 8689, 8845, 9001, 9156, 9311, 9467, 9622, 9779, 9934, 10089, 10245, 10400, 10556, 10712, 10868, 11023, 11178, 11334, 11489, 11646, 11801, 11956, 12112, 12267]]
    攻击次数2 = 1
    CD = 5
    TP成长 = 0.10
    TP上限 = 5
    ###
    # 倍率 = 1.114


# 爆烈斩击
class 技能6(职业主动技能):
    名称 = '爆烈斩击'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 43
    data0 = [int(i*1.085) for i in [0, 900, 991, 1083, 1175, 1266, 1358, 1449, 1540, 1632, 1723, 1814, 1906, 1997, 2088, 2180, 2271, 2363, 2454, 2545, 2637, 2728, 2819, 2911, 3002, 3093, 3185, 3276, 3367, 3459, 3550, 3641, 3733, 3825, 3917, 4008, 4099, 4191, 4282, 4373, 4465, 4556, 4647, 4739, 4830, 4921, 5013, 5104, 5195, 5287, 5378, 5469, 5561, 5652, 5744, 5835, 5926, 6018, 6109, 6200, 6292, 6384, 6475, 6567, 6658, 6749, 6841, 6932, 7023, 7115, 7206]]
    data1 = [int(i*1.085) for i in [0, 2101, 2314, 2527, 2742, 2955, 3168, 3381, 3594, 3807, 4020, 4234, 4447, 4660, 4873, 5086, 5300, 5514, 5727, 5940, 6153, 6366, 6579, 6792, 7006, 7219, 7432, 7645, 7858, 8072, 8286, 8499, 8712, 8925, 9138, 9351, 9564, 9778, 9991, 10204, 10417, 10631, 10844, 11058, 11271, 11484, 11697, 11910, 12123, 12336, 12550, 12763, 12976, 13190, 13403, 13616, 13830, 14043, 14256, 14469, 14682, 14895, 15108, 15322, 15535, 15749, 15962, 16175, 16388, 16602, 16815]]
    攻击次数2 = 1
    # 基础 = 1962.4*1.189
    # 成长 = 221.3*1.189
    CD = 5
    TP成长 = 0.10
    TP上限 = 5
    ###
    倍率 = 1.157


# 剑刃爆弹
class 技能7(职业主动技能):
    名称 = '剑刃爆弹'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    基础 = 4061.333333
    成长 = 451
    # 击退攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 595, 656, 716, 777, 837, 898, 958, 1019, 1079, 1139, 1200, 1260, 1321, 1381, 1442, 1503, 1562, 1623, 1683, 1744, 1804, 1865, 1925, 1986, 2046, 2106, 2167, 2227, 2288, 2348, 2409, 2470, 2529, 2590, 2650, 2711, 2771, 2832, 2893, 2953, 3014, 3073, 3134, 3194, 3255, 3316, 3376, 3437, 3497, 3557, 3617, 3678, 3739, 3799, 3860, 3920, 3981, 4040, 4101, 4162, 4222, 4283, 4343, 4404, 4464, 4524, 4585, 4645, 4706, 4766]]
    # 爆炸攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 1687, 1859, 2031, 2202, 2373, 2544, 2715, 2886, 3058, 3229, 3400, 3572, 3743, 3914, 4086, 4257, 4428, 4599, 4770, 4941, 5114, 5285, 5456, 5627, 5798, 5969, 6140, 6312, 6483, 6655, 6826, 6997, 7168, 7340, 7511, 7682, 7853, 8024, 8196, 8367, 8539, 8710, 8881, 9052, 9223, 9394, 9566, 9738, 9909, 10080, 10251, 10422, 10593, 10765, 10936, 11107, 11279, 11450, 11621, 11793, 11964, 12135, 12306, 12477, 12648, 12821, 12992, 13163, 13334, 13505]]
    攻击次数2 = 3
    # 特殊灼伤攻击力：<data2>%
    data2 = [int(i*1.0*1.085) for i in [0, 42, 46, 50, 55, 59, 64, 68, 72, 77, 81, 85, 89, 93, 98, 103, 107, 111, 116, 120, 124, 128, 132, 137, 142, 146, 150, 154, 159, 163, 167, 171, 176, 181, 185, 189, 193, 197, 202, 206, 210, 215, 219, 224, 228, 232, 236, 240, 245, 249, 254, 258, 263, 267, 271, 275, 279, 284, 288, 293, 297, 301, 306, 310, 314, 318, 322, 327, 332, 336, 340]]
    # 灼烧次数待定
    攻击次数3 = 7

    CD = 12
    TP成长 = 0.10
    TP上限 = 5
    ###
    # 倍率 = 1.124

# 广域散射


class 技能8(职业主动技能):
    名称 = '广域散射'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 38
    # 基础 = 3084
    # 成长 = 351
    data0 = [int(i*1.0*1.085) for i in [0, 4576, 5040, 5504, 5968, 6433, 6897, 7362, 7826, 8290, 8754, 9218, 9683, 10147, 10611, 11075, 11540, 12004, 12469, 12933, 13397, 13861, 14325, 14789, 15253, 15719, 16183, 16647, 17111, 17575, 18039, 18504, 18968, 19432, 19896, 20361, 20825, 21289, 21754, 22218, 22682, 23146, 23610, 24074, 24540, 25004, 25468, 25932, 26396, 26860, 27325, 27789, 28253, 28718, 29182, 29646, 30110, 30575, 31039, 31503, 31967, 32431, 32895, 33361, 33825, 34289, 34753, 35217, 35681, 36145, 36610]]

    CD = 7
    TP成长 = 0.10
    TP上限 = 5
    ###
    # 倍率 = 1.114

# G型火焰爆弹


class 技能9(职业主动技能):
    名称 = 'G型火焰爆弹'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 38
    # 基础 = 3568.333333
    # 成长 = 392
    # 爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 5115, 5633, 6153, 6672, 7190, 7709, 8228, 8748, 9266, 9785, 10304, 10822, 11342, 11861, 12380, 12898, 13418, 13937, 14455, 14974, 15493, 16013, 16531, 17050, 17569, 18088, 18607, 19126, 19644, 20163, 20683, 21202, 21720, 22239, 22758, 23277, 23796, 24315, 24834, 25353, 25872, 26391, 26909, 27428, 27948, 28467, 28985, 29504, 30024, 30542, 31061, 31580, 32099, 32618, 33137, 33656, 34174, 34694, 35213, 35732, 36250, 36769, 37289, 37807, 38326, 38845, 39363, 39883, 40402, 40921]]
    # 特殊灼伤攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 38, 42, 46, 49, 54, 58, 61, 65, 69, 74, 77, 81, 85, 88, 92, 97, 101, 104, 108, 112, 116, 120, 124, 128, 131, 135, 140, 143, 147, 151, 155, 159, 163, 167, 170, 174, 179, 183, 186, 190, 194, 197, 202, 206, 210, 213, 217, 222, 225, 229, 233, 237, 240, 245, 249, 253, 256, 260, 265, 268, 272, 276, 280, 284, 288, 292, 295, 299, 303, 308]]
    攻击次数2 = 7
    CD = 10
    TP成长 = 0.10
    TP上限 = 5
    ###
    # 倍率 = 1.166


# 爆裂斩
class 技能10(职业主动技能):
    名称 = '爆裂斩'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    # 基础 = 6713.333333
    # 成长 = 757
    # 第一次爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 1941, 2138, 2335, 2532, 2729, 2926, 3123, 3320, 3516, 3714, 3911, 4108, 4305, 4501, 4699, 4896, 5093, 5290, 5486, 5684, 5881, 6077, 6275, 6471, 6669, 6866, 7062, 7260, 7456, 7653, 7851, 8047, 8245, 8441, 8638, 8836, 9032, 9230, 9426, 9623, 9821, 10017, 10214, 10411, 10608, 10806, 11002, 11199, 11396, 11593, 11790, 11987, 12184, 12381, 12578, 12775, 12972, 13169, 13365, 13563, 13760, 13957, 14154, 14350, 14548, 14745, 14942, 15139, 15335, 15533]]
    # 第二次爆炸攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 2912, 3208, 3503, 3798, 4094, 4389, 4685, 4980, 5275, 5571, 5866, 6162, 6458, 6753, 7049, 7344, 7640, 7935, 8230, 8526, 8821, 9117, 9412, 9707, 10003, 10298, 10595, 10890, 11185, 11481, 11776, 12072, 12367, 12662, 12958, 13253, 13549, 13844, 14139, 14435, 14730, 15027, 15322, 15617, 15913, 16208, 16504, 16799, 17094, 17390, 17685, 17981, 18276, 18571, 18867, 19163, 19459, 19754, 20049, 20345, 20640, 20936, 21231, 21526, 21822, 22117, 22413, 22708, 23003, 23300]]
    攻击次数2 = 1
    # 第三次爆炸攻击力：<data2>%
    data2 = [int(i*1.0*1.085) for i in [0, 4853, 5346, 5838, 6330, 6823, 7315, 7808, 8300, 8793, 9285, 9778, 10270, 10763, 11255, 11747, 12240, 12732, 13225, 13717, 14210, 14702, 15195, 15687, 16179, 16672, 17164, 17657, 18149, 18642, 19134, 19627, 20119, 20612, 21104, 21596, 22089, 22581, 23074, 23566, 24059, 24551, 25044, 25536, 26028, 26521, 27013, 27506, 27998, 28491, 28983, 29476, 29968, 30461, 30953, 31445, 31938, 32430, 32923, 33415, 33908, 34400, 34893, 35385, 35877, 36370, 36862, 37355, 37847, 38340, 38832]]
    攻击次数3 = 1
    CD = 15
    TP成长 = 0.10
    TP上限 = 5
    ###
    # 倍率 = 1.1


# 爆弹罗网
class 技能11(职业主动技能):
    名称 = '爆弹罗网'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36

    # 射击攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in  [0, 563, 620, 676, 734, 791, 848, 905, 962, 1020, 1076, 1133, 1191, 1247, 1305, 1362, 1419, 1476, 1533, 1591, 1647, 1704, 1762, 1819, 1875, 1933, 1990, 2048, 2104, 2161, 2219, 2275, 2333, 2390, 2447, 2504, 2561, 2618, 2675, 2732, 2790, 2847, 2903, 2961, 3018, 3075, 3132, 3189, 3247, 3303, 3360, 3418, 3474, 3532, 3589, 3646, 3703, 3760, 3818, 3875, 3931, 3989, 4046, 4103, 4160, 4217, 4275, 4331, 4388, 4446, 4502]]
    # 爆炸攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in  [0, 1688, 1860, 2031, 2202, 2373, 2545, 2716, 2888, 3059, 3230, 3401, 3573, 3744, 3915, 4087, 4258, 4429, 4600, 4772, 4943, 5115, 5286, 5457, 5628, 5800, 5971, 6143, 6314, 6485, 6656, 6827, 6999, 7170, 7342, 7513, 7684, 7855, 8027, 8198, 8370, 8541, 8712, 8883, 9055, 9226, 9398, 9569, 9740, 9911, 10082, 10254, 10425, 10597, 10768, 10939, 11110, 11282, 11453, 11625, 11796, 11967, 12138, 12310, 12481, 12653, 12824, 12995, 13166, 13337, 13509]]
    攻击次数2 = 6
    # 特殊灼伤攻击力：<data2>%
    data2 = [int(i*1.0*1.085) for i in  [0, 80, 88, 97, 104, 112, 121, 129, 137, 145, 153, 162, 170, 177, 186, 194, 203, 210, 218, 227, 235, 243, 251, 259, 268, 276, 284, 292, 300, 309, 316, 324, 333, 341, 349, 357, 365, 374, 382, 390, 398, 406, 415, 422, 431, 439, 447, 455, 463, 471, 480, 488, 496, 504, 512, 521, 528, 537, 545, 553, 561, 569, 578, 586, 594, 602, 610, 618, 627, 634, 643]]
    攻击次数3 = 7

    # 基础 = 425.8333333 + 57.33333333 * 7
    # 成长 = 48.5 + 7 * 7
    # 攻击次数 = 1

    # 基础2 = 1278.833333
    # 成长2 = 145.5
    # 攻击次数2 = 6

    CD = 25  # 韩测改动位置
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    技能施放时间 = 1

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数2 = 2 * 3.5  # 描述错误
        elif x == 1:
            self.攻击次数2 = 2 * 3.8  # 描述错误，改动位置

# 裂地爆刃


class 技能12(职业主动技能):
    名称 = '裂地爆刃'
    所在等级 = 40
    等级上限 = 60
    基础等级 = 33
    CD = 25
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    # 基础 = 9551
    # 成长 = 1076
    # ###
    # 倍率 = 1.158

    # 爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 14617, 16100, 17583, 19066, 20549, 22032, 23515, 24997, 26481, 27964, 29446, 30930, 32412, 33895, 35379, 36861, 38344, 39828, 41310, 42793, 44276, 45759, 47242, 48725, 50208, 51690, 53174, 54657, 56139, 57623, 59106, 60588, 62072, 63554, 65037, 66521, 68003, 69486, 70970, 72452, 73935, 75418, 76901, 78384, 79867, 81350, 82832, 84316, 85799, 87281, 88765, 90248, 91730, 93214, 94696, 96179, 97663, 99145, 100628, 102111, 103594, 105077, 106560, 108043, 109526, 111009, 112492, 113974, 115458, 116941]]

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.CD *= 0.92
            self.倍率 *= 1.24
        elif x == 1:
            self.CD *= 0.92
            self.倍率 *= 1.24*1.07  # 改动位置，待测试

# 惊喜大礼


class 技能13(职业主动技能):
    名称 = '惊喜大礼'
    所在等级 = 45
    等级上限 = 60
    基础等级 = 31
    # 基础 = 17084
    # 成长 = 1935
    # 爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 4244, 4675, 5105, 5537, 5967, 6398, 6828, 7259, 7689, 8120, 8550, 8982, 9412, 9843, 10273, 10704, 11134, 11565, 11996, 12427, 12857, 13288, 13718, 14149, 14579, 15010, 15441, 15872, 16302, 16733, 17163, 17594, 18024, 18455, 18886, 19317, 19747, 20178, 20608, 21039, 21469, 21900, 22331, 22762, 23192, 23623, 24053, 24484, 24914, 25345, 25776, 26207, 26637, 27068, 27498, 27929, 28359, 28791, 29222, 29652, 30083, 30513, 30944, 31374, 31805, 32236, 32667, 33097, 33528, 33958]]
    攻击次数 = 6

    CD = 45
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    ###
    # 倍率 = 1.124

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.CD *= 0.89
            self.倍率 *= 1.07
        elif x == 1:
            self.CD *= 0.89
            self.倍率 *= 1.15  # 改动位置


# 一觉
class 技能14(职业主动技能):
    名称 = 'G型烬灭榴弹'
    所在等级 = 50
    等级上限 = 40
    基础等级 = 12
    # 首次爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 5995, 7385, 8776, 10167, 11557, 12947, 14337, 15727, 17118, 18508, 19899, 21289, 22680, 24070, 25460, 26850, 28240, 29630, 31022, 32412, 33802, 35192, 36583, 37973, 39363, 40753, 42145, 43535, 44925, 46315, 47705, 49096, 50486, 51876, 53267, 54657, 56048, 57438, 58828, 60218, 61608, 62999, 64390, 65780, 67170, 68561, 69951, 71341, 72731, 74121, 75513, 76903, 78293, 79683, 81074, 82464, 83854, 85244, 86635, 88026, 89416, 90806, 92196, 93586, 94977, 96367, 97758, 99148, 100539, 101929]]
    # 特殊灼伤攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 428, 527, 627, 725, 825, 924, 1024, 1123, 1223, 1321, 1421, 1520, 1620, 1718, 1818, 1917, 2017, 2116, 2216, 2314, 2414, 2513, 2613, 2711, 2811, 2910, 3010, 3109, 3209, 3307, 3407, 3506, 3606, 3704, 3804, 3903, 4003, 4102, 4201, 4300, 4400, 4499, 4599, 4699, 4797, 4897, 4996, 5096, 5194, 5294, 5393, 5493, 5592, 5692, 5790, 5890, 5989, 6089, 6187, 6287, 6386, 6486, 6585, 6685, 6783, 6883, 6982, 7082, 7180, 7280]]
    攻击次数2 = 7
    # 霰弹枪射击攻击力：<data2>%
    data2 = [int(i*1.0*1.085) for i in [0, 5246, 6462, 7679, 8895, 10112, 11328, 12545, 13762, 14978, 16195, 17411, 18628, 19844, 21061, 22278, 23494, 24711, 25927, 27144, 28360, 29577, 30794, 32010, 33227, 34443, 35660, 36876, 38093, 39309, 40526, 41743, 42959, 44176, 45392, 46609, 47825, 49042, 50259, 51474, 52691, 53907, 55124, 56340, 57557, 58773, 59990, 61206, 62423, 63640, 64856, 66073, 67289, 68506, 69722, 70939, 72156, 73372, 74589, 75805, 77022, 78238, 79455, 80672, 81888, 83105, 84321, 85538, 86754, 87971, 89188]]
    攻击次数3 = 4
    # 最终爆炸攻击力：<data3>%
    data3 = [int(i*1.0*1.085) for i in [0, 29979, 36930, 43882, 50834, 57785, 64737, 71688, 78640, 85593, 92543, 99496, 106448, 113399, 120351, 127302, 134254, 141206, 148157, 155109, 162061, 169012, 175965, 182915, 189868, 196820, 203771, 210723, 217674, 224626, 231578, 238529, 245481, 252433, 259384, 266336, 273287, 280240, 287192, 294143, 301095, 308047, 314998, 321950, 328901, 335853, 342805, 349756, 356708, 363659, 370612, 377564, 384515, 391467, 398419, 405370, 412322, 419273, 426225, 433177, 440128, 447080, 454033, 460984, 467936, 474887, 481839, 488791, 495742, 502694, 509645]]
    攻击次数4 = 1
    CD = 145
    # Lv3：[G型烬灭榴弹]攻击力增加10%，目前没有体现在技能面板上，后续需要确认
    倍率 = 1.1
# 完美击球


class 技能15(职业主动技能):
    名称 = '完美击球'
    所在等级 = 60
    等级上限 = 40
    基础等级 = 23
    CD = 25
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    # 旋转爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 5463, 6018, 6572, 7126, 7681, 8235, 8789, 9343, 9897, 10452, 11006, 11561, 12115, 12669, 13224, 13777, 14331, 14886, 15440, 15995, 16549, 17103, 17658, 18212, 18767, 19320, 19874, 20429, 20983, 21538, 22092, 22646, 23201, 23755, 24310, 24863, 25417, 25972, 26526, 27081, 27635, 28189, 28744, 29298, 29852, 30406, 30960, 31515, 32069, 32624, 33178, 33732, 34287, 34841, 35394, 35949, 36503, 37058, 37612, 38166, 38721, 39275, 39830, 40383, 40937, 41492, 42046, 42601, 43155, 43709]]
    # 最终爆炸攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 12748, 14042, 15335, 16628, 17921, 19215, 20509, 21801, 23095, 24388, 25682, 26975, 28268, 29562, 30855, 32148, 33441, 34735, 36029, 37321, 38615, 39908, 41202, 42496, 43788, 45082, 46375, 47669, 48962, 50255, 51549, 52842, 54135, 55428, 56722, 58016, 59308, 60602, 61895, 63189, 64482, 65775, 67069, 68362, 69655, 70949, 72242, 73536, 74828, 76122, 77415, 78709, 80002, 81295, 82589, 83882, 85175, 86469, 87762, 89056, 90349, 91642, 92936, 94229, 95523, 96815, 98109, 99402, 100696, 101989]]
    攻击次数2 = 1

    护石状态 = 0

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数2 = 0
            self.data0 = [int(i*1.24) for i in self.data0]
            # self.倍率 *= 1.24
            self.护石状态 = 1
        elif x == 1:
            self.攻击次数2 = 0
            self.data0 = [int(i*1.34) for i in self.data0]
            # self.倍率 *= 1.34#改动位置，具体待测试
            self.护石状态 = 1

    def 等效CD(self, 武器类型, 输出类型):
        if self.护石状态 == 0:
            return round(self.CD / self.恢复, 1)
        else:
            return round(8.3 * 0.88, 1)

# 夺命焰火


class 技能16(职业主动技能):
    名称 = '夺命焰火'
    所在等级 = 70
    等级上限 = 40
    基础等级 = 18

    # 第一次射击攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 7700, 8481, 9262, 10043, 10824, 11605, 12386, 13167, 13948, 14729, 15511, 16292, 17073, 17854, 18635, 19417, 20198, 20979, 21760, 22541, 23323, 24104, 24885, 25666, 26447, 27228, 28009, 28790, 29571, 30352, 31134, 31915, 32696, 33477, 34258, 35040, 35821, 36602, 37383, 38164, 38946, 39727, 40508, 41289, 42070, 42852, 43632, 44413, 45194, 45975, 46757, 47538, 48319, 49100, 49881, 50663, 51444, 52225, 53006, 53787, 54569, 55350, 56131, 56912, 57693, 58475, 59255, 60036, 60817, 61598]]
    # 第二次射击攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 11549, 12721, 13893, 15064, 16236, 17408, 18580, 19752, 20923, 22095, 23267, 24439, 25610, 26781, 27953, 29125, 30297, 31469, 32640, 33812, 34984, 36156, 37328, 38499, 39671, 40842, 42014, 43185, 44357, 45529, 46701, 47873, 49044, 50216, 51388, 52560, 53732, 54903, 56075, 57246, 58418, 59590, 60761, 61933, 63105, 64277, 65449, 66620, 67792, 68964, 70136, 71308, 72479, 73650, 74822, 75994, 77166, 78337, 79509, 80681, 81853, 83025, 84196, 85368, 86540, 87712, 88883, 90054, 91226, 92398]]
    攻击次数2 = 1
    # 最终射击攻击力：<data2>%
    data2 = [int(i*1.0*1.085) for i in [0, 4812, 5300, 5789, 6277, 6765, 7253, 7742, 8230, 8718, 9205, 9694, 10182, 10670, 11158, 11647, 12135, 12623, 13111, 13600, 14088, 14576, 15064, 15553, 16041, 16529, 17017, 17506, 17994, 18482, 18970, 19459, 19947, 20435, 20923, 21412, 21900, 22388, 22876, 23365, 23853, 24341, 24829, 25317, 25805, 26293, 26781, 27270, 27758, 28246, 28734, 29223, 29711, 30199, 30687, 31176, 31664, 32152, 32640, 33129, 33617, 34105, 34593, 35082, 35570, 36058, 36546, 37035, 37523, 38011, 38499]]
    攻击次数3 = 4

    CD = 50
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    ###
    # 倍率 = 1.146

    护石选项 = ['魔界', '圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数 *= 1.1
            self.攻击次数2 *= 1.23
        elif x == 1:
            self.攻击次数 *= 1.1
            self.攻击次数2 *= 1.39  # 改动位置，具体待测试

# 爆弹华尔兹


class 技能17(职业主动技能):
    名称 = '爆弹华尔兹'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    # 第一次爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in[0, 7924, 8729, 9532, 10336, 11141, 11944, 12748, 13552, 14356, 15160, 15964, 16767, 17572, 18376, 19179, 19984, 20788, 21591, 22395, 23200, 24003, 24807, 25612, 26415, 27219, 28023, 28827, 29631, 30435, 31239, 32043, 32847, 33650, 34455, 35259, 36062, 36867, 37671, 38474, 39278, 40083, 40886, 41690, 42495, 43298, 44102, 44906, 45710, 46514, 47318, 48122, 48926, 49730, 50533, 51338, 52142, 52945, 53750, 54554, 55358, 56161, 56966, 57770, 58573, 59378, 60182, 60985, 61789, 62594, 63397]]
    攻击次数 = 3
    # 第二次爆炸攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 7132, 7855, 8579, 9302, 10026, 10750, 11473, 12197, 12920, 13644, 14367, 15091, 15814, 16538, 17262, 17985, 18709, 19432, 20156, 20879, 21603, 22326, 23050, 23774, 24498, 25221, 25944, 26668, 27391, 28115, 28838, 29562, 30285, 31010, 31733, 32457, 33180, 33903, 34627, 35350, 36074, 36797, 37522, 38245, 38969, 39692, 40416, 41139, 41862, 42586, 43309, 44033, 44757, 45481, 46204, 46928, 47651, 48375, 49098, 49821, 50545, 51269, 51993, 52716, 53440, 54163, 54887, 55610, 56334, 57057]]
    攻击次数2 = 5

    CD = 40
    ###
    # 倍率 = 1.1

    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.攻击次数 = 0
            self.攻击次数2 += 3
            self.data1 = [int(i*1.38) for i in self.data1]
            # self.倍率 *= 1.38
            self.CD *= 0.9
# 覆灭之枪


class 技能18(职业主动技能):
    名称 = '覆灭之枪'
    所在等级 = 80
    等级上限 = 40
    基础等级 = 13
    # 射击攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 74342, 81884, 89426, 96969, 104511, 112053, 119595, 127137, 134678, 142220, 149763, 157305, 164847, 172389, 179931, 187473, 195015, 202557, 210099, 217641, 225183, 232725, 240267, 247809, 255352, 262894, 270435, 277977, 285519, 293061, 300603, 308146, 315688, 323230, 330772, 338314, 345855, 353397, 360940, 368482, 376024, 383566, 391108, 398650, 406193, 413734, 421276, 428818, 436360, 443902, 451444, 458987, 466529, 474071, 481612, 489154, 496696, 504238, 511781, 519323, 526865, 534407, 541949, 549491, 557032, 564575, 572117, 579659, 587201, 594743]]

    CD = 50

    是否有护石 = 1
    护石选项 = ['圣痕']

    def 装备护石(self, x):
        if x == 0:
            self.data0 = [int(i*1.4) for i in self.data0]
# 二觉


class 技能19(职业主动技能):
    名称 = '终焉：硝烟狂欢'
    所在等级 = 85
    等级上限 = 40
    基础等级 = 5
    # 基础 = 88115.33333
    # 成长 = 26597.5
    # CTF地雷爆炸攻击力：<data0>%
    data0 = [int(i*1.0*1.085) for i in [0, 15195, 18717, 22241, 25764, 29288, 32811, 36334, 39858, 43382, 46905, 50428, 53951, 57475, 60999, 64521, 68045, 71569, 75092, 78616, 82138, 85662, 89186, 92709, 96233, 99756, 103279, 106803, 110326, 113849, 117373, 120896, 124420, 127943, 131466, 134990, 138513, 142037, 145560, 149083, 152607, 156130, 159654, 163177, 166700, 170224, 173748, 177270, 180794, 184317, 187841, 191365, 194887, 198411, 201935, 205458, 208982, 212504, 216028, 219552, 223075, 226598, 230121, 233645, 237169, 240692, 244215, 247739, 251262, 254786, 258308]]
    攻击次数 = 4
    # 最后爆炸攻击力：<data1>%
    data1 = [int(i*1.0*1.085) for i in [0, 7012, 8638, 10265, 11891, 13517, 15143, 16770, 18396, 20021, 21648, 23274, 24901, 26526, 28153, 29779, 31406, 33031, 34657, 36284, 37910, 39536, 41162, 42789, 44415, 46040, 47667, 49293, 50920, 52545, 54172, 55798, 57425, 59050, 60676, 62303, 63929, 65555, 67181, 68808, 70434, 72059, 73686, 75312, 76939, 78564, 80191, 81817, 83444, 85069, 86695, 88322, 89948, 91574, 93200, 94827, 96453, 98078, 99705, 101331, 102958, 104583, 106210, 107836, 109463, 111088, 112714, 114341, 115967, 117593, 119219]]
    攻击次数2 = 13
    CD = 180
# 95


class 技能20(职业主动技能):
    名称 = '铁腕爆弹'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 6
    data0 = [int(i*1.085) for i in [0, 31294, 34469, 37645, 40820, 43994, 47169, 50344, 53519, 56694, 59869, 63043, 66218, 69393, 72568, 75743, 78918, 82093, 85267, 88443, 91618, 94792, 97967, 101142, 104316, 107492, 110667, 113842, 117016, 120191, 123367, 126541, 129716, 132891, 136065, 139241, 142416, 145590, 148765, 151940, 155115, 158290, 161465, 164640, 167814, 170989, 174165, 177339, 180514, 183689, 186863, 190038, 193214, 196389, 199563, 202738, 205913, 209088, 212263, 215438, 218612, 221787, 224963, 228137, 231312, 234487, 237662, 240836, 244012, 247187, 250361]]
    攻击次数 = 4
    CD = 60

# 三觉


class 技能21(职业主动技能):
    名称 = '烽火硝烟·终末之征'
    所在等级 = 100
    等级上限 = 40
    基础等级 = 2
    data0 = [int(i*1.085) for i in [0, 15779, 19439, 23098, 26757, 30416, 34076, 37735, 41394, 45053, 48713, 52372, 56031, 59690, 63350, 67009, 70667, 74326, 77986, 81645, 85304, 88963, 92623, 96282, 99941, 103600, 107260, 110919, 114578, 118237, 121897, 125556, 129215, 132873, 136533, 140192, 143851, 147510, 151170, 154829, 158488, 162147, 165807, 169466, 173125, 176784, 180444, 184103, 187762, 191421, 195080, 198739, 202398, 206057, 209717, 213376, 217035, 220694, 224354, 228013, 231672, 235331, 238991, 242650, 246309, 249968, 253628, 257287, 260945, 264604, 268263]]
    攻击次数 = 5
    data1 = [int(i*1.085) for i in [0, 315605, 388789, 461972, 535156, 608340, 681524, 754707, 827891, 901075, 974258, 1047442, 1120626, 1193810, 1266994, 1340178, 1413361, 1486545, 1559729, 1632913, 1706097, 1779281, 1852464, 1925648, 1998831, 2072015, 2145199, 2218383, 2291567, 2364751, 2437934, 2511118, 2584302, 2657486, 2730670, 2803854, 2877037, 2950221, 3023405, 3096589, 3169773, 3242957, 3316139, 3389323, 3462507, 3535691, 3608875, 3682059, 3755242, 3828426, 3901610, 3974794, 4047978, 4121162, 4194346, 4267529, 4340713, 4413898, 4487081, 4560264, 4633447, 4706631, 4779816, 4852999, 4926183, 4999367, 5072551, 5145735, 5218919, 5292102, 5365286]]
    攻击次数2 = 1
    CD = 290

    def 加成倍率(self, 武器类型):
        return 0.0


技能列表 = []
i = 0
while i >= 0:
    try:
        tem = eval('技能'+str(i)+'()')
        tem.基础等级计算()
        技能列表.append(tem)
        i += 1
    except:
        i = -1

技能序号 = dict()
for i in range(len(技能列表)):
    技能序号[技能列表[i].名称] = i

苍暮·战线佣兵一觉序号 = 0
苍暮·战线佣兵二觉序号 = 0
苍暮·战线佣兵三觉序号 = 0
for i in 技能列表:
    if i.所在等级 == 50:
        苍暮·战线佣兵一觉序号 = 技能序号[i.名称]
    if i.所在等级 == 85:
        苍暮·战线佣兵二觉序号 = 技能序号[i.名称]
    if i.所在等级 == 100:
        苍暮·战线佣兵三觉序号 = 技能序号[i.名称]

苍暮·战线佣兵护石选项 = ['无']
for i in 技能列表:
    if i.是否有伤害 == 1 and i.是否有护石 == 1:
        苍暮·战线佣兵护石选项.append(i.名称)

苍暮·战线佣兵符文选项 = ['无']
for i in 技能列表:
    if i.所在等级 >= 20 and i.所在等级 <= 80 and i.所在等级 != 50 and i.是否有伤害 == 1:
        苍暮·战线佣兵符文选项.append(i.名称)


class 苍暮·战线佣兵角色属性(角色属性):
    实际名称 = '苍暮·战线佣兵'
    角色 = '枪剑士'
    职业 = '战线佣兵'

    武器选项 = ['重剑']

    类型选择 = ['物理百分比']

    类型 = '物理百分比'
    防具类型 = '重甲'
    防具精通属性 = ['力量']

    主BUFF = 2.0

    def __init__(self):
        基础属性输入(self)
        self.技能栏 = deepcopy(技能列表)
        self.技能序号 = deepcopy(技能序号)


class 苍暮·战线佣兵(角色窗口):
    def 窗口属性输入(self):
        self.初始属性 = 苍暮·战线佣兵角色属性()
        self.角色属性A = 苍暮·战线佣兵角色属性()
        self.角色属性B = 苍暮·战线佣兵角色属性()
        self.一觉序号 = 苍暮·战线佣兵一觉序号
        self.二觉序号 = 苍暮·战线佣兵二觉序号
        self.三觉序号 = 苍暮·战线佣兵三觉序号
        self.护石选项 = deepcopy(苍暮·战线佣兵护石选项)
        self.符文选项 = deepcopy(苍暮·战线佣兵符文选项)

    def 护石判断(self):
        sign = 0
        for x in range(3):
            if self.护石栏[x].currentText() == '爆弹罗网':
                sign = 1
        if sign == 0:
            self.爆弹罗网护石跳跃选项.setEnabled(False)
            self.爆弹罗网护石跳跃选项.setStyleSheet(复选框样式)
            self.爆弹罗网护石跳跃选项.setChecked(False)
        else:
            self.爆弹罗网护石跳跃选项.setEnabled(True)
            self.爆弹罗网护石跳跃选项.setStyleSheet(复选框样式)

    def 界面(self):
        super().界面()
        for i in range(3):
            self.护石栏[i].currentIndexChanged.connect(lambda state: self.护石判断())
        self.爆弹罗网护石跳跃选项 = QCheckBox('爆弹罗网护石跳跃释放', self.main_frame2)
        self.爆弹罗网护石跳跃选项.resize(140, 20)
        self.爆弹罗网护石跳跃选项.move(320, 360)
        self.爆弹罗网护石跳跃选项.setStyleSheet(复选框样式)
        self.爆弹罗网护石跳跃选项.setToolTip('跳跃释放爆弹罗网，仅佩戴护石时生效')
        self.职业存档.append(('爆弹罗网护石跳跃选项', self.爆弹罗网护石跳跃选项, 0))

    def 输入属性(self, 属性, x=0):
        super().输入属性(属性, x)
        if self.爆弹罗网护石跳跃选项.isChecked():
            属性.技能栏[属性.技能序号['爆弹罗网']].攻击次数 = 0
